#ifndef __BSP_IC_H
#define __BSP_IC_H

#include "stm32f4xx.h"
#include "bsp_led.h"

/* 输入捕获 */
#define IC1_TIM_CLK_ENABLE()     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE)
#define IC1_GPIO_CLK_ENABLE()    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)
#define IC1_TIM                  TIM3
#define IC1_GPIO_PORT            GPIOA
#define IC1_GPIO_PIN             GPIO_Pin_6

/* 设置输入捕获的参数 */
// 可捕获的信号频率最低为72M/(PSC+1)/(ARR+1)，同时捕获频率必须是输入信号的10倍以上
#define IC1_TIM_Period           (65536 - 1) // ARR
#define IC1_TIM_Prescaler        (7200 - 1)    // PSC

#define IC1_TIM_CH               TIM_Channel_1    // 捕获通道选择

void IC_Init(void);
uint16_t IC_GetCapture(TIM_TypeDef* TIMx, uint8_t IC_Num);
uint32_t IC_GetFreq(TIM_TypeDef* TIMx, uint8_t IC_Num);
float IC_GetFreq_IT(void);
float IC_GetPeriod_IT(void);

#endif // __BSP_IC_H